﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GIFT
{
    class ControlLista
    {
        //Constructor de la clase
        public ControlLista()
        {
            consultaLista = new ConsultaLista();
        }

        //Recibe un nombre y retorna true si este ya existe en la base de datos
        public bool existe(String nombre)
        {
            if (consultaLista.existe(nombre))//Si ya existe
            {
                return true;
            }
            return false;
        }

        //Recibe un nombre y retorna true si este ya existe un termino en la base de datos
        public bool existeTermino(String nombre, String correlativo)
        {
            if (consultaLista.existeTermino(nombre, correlativo))//Si ya existe
            {
                return true;
            }
            return false;
        }

        //Manda a borrar una Lista
        public void borrar(String nombre)
        {
            consultaLista.borrar(nombre);
        }

        //Retornar el atributo de la Lista con el nombre que recibe como parametro
        public String obtenerAtributo(String nombre, String atributo)
        {
            //Manda a buscar en la base de datos el correlativo
            return consultaLista.buscarAtributo(nombre, atributo);
        }

        //Retornar el defecto de la Lista
        public String obtieneDefectoLista(String idDefecto)
        {
            //Manda a buscar en la base de datos el defecto
            return consultaLista.obtieneDefectoLista(idDefecto);
        }

        //retorna una lista con todos los nombres de las listas que existen
        public ArrayList obtenerListas()
        {
            ArrayList nombres = consultaLista.obtieneListas(); //Obtiene las Listas y los retorna
            return nombres;
        }

        //retorna una lista con todos los terminos de una lista 
        public ArrayList obtieneTerminosLista(String correlativo)
        {
            ArrayList terminos = consultaLista.obtieneTerminosLista(correlativo); //Obtiene las Listas y los retorna
            return terminos;
        }

        //Manda a modificar una lista
        public void modificarLista(String nombre, String descripcion, bool orden)
        {
            if (descripcion == "") descripcion = "NULL";
            consultaLista.modificarLista(nombre, descripcion, orden); //Lo manda a agregar a la BD
        }


        //Manda a crear una nueva Lista
        public void crearNuevo(String nombre, String descripcion, bool orden)
        {
            if (nombre == "") return;
            if (descripcion == "") descripcion = "NULL";
            consultaLista.crear(nombre, descripcion, orden); //Lo manda a agregar a la BD
        }

        //Manda a crear un nuevo Termino
        public void crearTermino(String nombre, String correlativoLista, String orden)
        {
            consultaLista.crearTermino(nombre, correlativoLista, orden); //Lo manda a agregar a la BD
        }

        //Establece el orden de un termino de una lista
        public void estableceOrdenTermino(String termino, String orden, String correlativo) 
        {
            consultaLista.estableceOrdenTermino(termino, orden, correlativo);
        }

        //Establece el orden de la lista
        public void estableceOrdenLista(bool orden, String correlativo) 
        {
            consultaLista.estableceOrdenLista(orden, correlativo); 
        }

        //Establece el defecto de la Lista
        public void estableceDefectoLista(String defecto, String correlativo) 
        {
            consultaLista.estableceDefectoLista(defecto, correlativo);
        }

        //Elimina un termino de una Lista especifica
        public void eliminaTermino(String termino, String correlativoLista)
        {
            consultaLista.eliminaTermino(termino, correlativoLista);
        }

        //Devuelve el ID de un termino de una lista especifica
        public String obtieneIDTermino(String termino, String correlativoLista)
        {
            return consultaLista.obtieneIDTermino(termino, correlativoLista);        
        }

        //Copia los terminos de una lista a otra lista
        public void copiarTerminosLista(String nombreNuevo, String nombreViejo) 
        {
            consultaLista.copiarTerminosLista(nombreNuevo, nombreViejo);
        }

        //Retorna un arreglo con los nombres de las listas que contengan la hilera que reciba como parametro en el nombre o la descripcion
        public ArrayList buscarContenido(String aBuscar)
        {
            ArrayList nombres = consultaLista.buscarConcordancias(aBuscar);//Agrega al arreglo los nombres 
            return nombres;
        }

        //Copia el defecto de una lista en otra
        public void copiarDefecto(String nombreNuevo, String nombreViejo)
        {
            consultaLista.copiarDefecto(nombreNuevo, nombreViejo);
        }

        //Modifica un termino de una lista
        public void modificaTermino(String correlativoLista, String nombreViejo, String nombreNuevo)
        {
            consultaLista.modificaTermino(correlativoLista, nombreViejo, nombreNuevo);
        }

        //Variables globales

        //Clase que realiza las consultas a la base de datos
        private ConsultaLista consultaLista;
    }
}
